package mine.code.question.动态规划;

import org.junit.Test;

/**
 * 小扣打算给自己的 VS code 安装使用插件，初始状态下带宽每分钟可以完成 1 个插件的下载。假定每分钟选择以下两种策略之一:
 * <p>
 * 使用当前带宽下载插件
 * 将带宽加倍（下载插件数量随之加倍）
 * 请返回小扣完成下载 n 个插件最少需要多少分钟。
 * <p>
 * 注意：实际的下载的插件数量可以超过 n 个
 * <p>
 * 输入：n = 2
 * <p>
 * 输出：2
 * <p>
 * 解释：
 * 以下两个方案，都能实现 2 分钟内下载 2 个插件
 * <p>
 * 方案一：第一分钟带宽加倍，带宽可每分钟下载 2 个插件；第二分钟下载 2 个插件
 * 方案二：第一分钟下载 1 个插件，第二分钟下载 1 个插件
 *
 * @author caijinnan
 */
public class 下载插件 {

    @Test
    public void run() {
        System.out.println(leastMinutes(10));
    }


    public int leastMinutes(int n) {
        if (n == 1) {
            return 1;
        }
        if (n == 3) {
            return 3;
        }
        int i = 2;
        int sum = 2;
        while (i < n) {
            sum += 1;
            i *= 2;
        }
        return sum;
    }

}
